Mapping ADO Methods and Properties

This section maps the methods, properties, and collections of ADO objects to the OLE DB methods supported by the ADO data provider.

Some ADO methods do not have a comparable OLE DB method. When more than one OLE DB method can be used, ADO uses the method that requires the least amount of system resources. For example, if an ADO method can use either ICommand or IOpenRowset, it uses the less performance-intensive IOpenRowset.

ADO Command Object

The Command object can be used to specify a database query in the language native to the database server. For a relational data provider, this is usually a SQL statement.

The Execute method for the ADO Command object maps to the OLE DB method, ICommand::Execute.

Table 4-10 lists the dynamic properties that are supported by the ADO data provider for the Command object.

Table 4-10. Dynamic Properties Used for the ADO Command Object 
ADO Property
Default Value and Description
Access Order
VALUE=2. Columns can be accessed in any order.
Blocking Storage Objects
VALUE=False. Instantiated storage objects do not prevent the use of other methods.
Change Inserted Rows
VALUE=False. The value can only be set to True if the rowset is using a keyset-driven cursor.
Column Privileges
Specifies whether access rights are restricted on a column-by-column basis.
VALUE=True. Access rights are restricted on a column-by-column basis.
VALUE=False. Access rights are not restricted on a column-by-column basis. If the rowset exposes IRowsetChange, SetData can be called for any column in the rowset.
Fetch Backwards
VALUE=False. cRows must be non-negative.
Hold Rows
VALUE=True. Access rights are restricted on a column-by-column basis.
IAccessor
VALUE=True
IColumnsInfo
VALUE=True
IColumnsRowset
VALUE=True
IConvertType
VALUE=True
IRowset
VALUE=True
IRowsetChange
VALUE=False
IRowsetInfo
VALUE=True
Literal Row Identity
VALUE=False. The consumer must call IRowsetIdentity::IsSameRow to determine whether two row handles point to the same row.
Lock Mode
VALUE=1. The data provider is not required to lock rows at any time to ensure successful updates.
Maximum Open Rows
Specifies the maximum number of rows that can be active at the same time.
VALUE=4096
Maximum Pending Rows
VALUE=0. There is no limit on the number of rows that can have pending changes at the same time.
Maximum Rows
VALUE=0. There is no limit on the number of rows that can be returned in a rowset.
Memory Usage
VALUE=0. There is no limit on the amount of memory that can be used by the rowset.
Objects Transacted
VALUE=True. Any object created on the specified column is transacted.
Others' Changes Visible
VALUE=False. The rowset cannot see updates and deletes made by others.
Others' Inserts Visible
VALUE=False. The rowset cannot see inserts made by others.
Own Changes Visible
VALUE=False. The rowset cannot see updates and deletes made by consumers of the rowset unless the command is executed again.
Own Inserts Visible
VALUE=False. The rowset can see the rows inserted by consumers only after the command is run again.
Preserve on Abort
The value depends on the SequeLink service that you are using.
Preserve on Commit
The value depends on the SequeLink service that you are using.
Quick Restart
VALUE=True. IRowset::RestartPosition is relatively quick to execute. It does not again execute the command that created the rowset.
Remove Deleted Rows
VALUE=False. Static cursors do not remove deleted rows.
Report Multiple Changes
VALUE=False. An update or delete always affects a single row or the data provider cannot detect whether it affects multiple rows.
Return Pending Inserts
VALUE=False. The methods that fetch rows cannot return pending insert rows.
Row Privileges
VALUE=False. The data provider does not set access restrictions for rows.
Row Threading Model
VALUE=1. The ADO data provider uses the free-threaded model.
Scroll Backward
VALUE=False. IRowsOffset must be non-negative.
Server Cursor
VALUE=False. The data provider determines where to locate the cursor.
Strong Row Identity
VALUE=False. There is no guarantee that the handles of newly inserted rows can be compared successfully.
Unique Rows
VALUE=False. Rows in the rowset may or may not be uniquely identified by their column values.
Updatability
Specifies the supported methods on IRowsetChange.
VALUE=0
Use Bookmarks
VALUE=False. The rowset does not support bookmarks.

Connection Object

The ADO Connection object represents a single session with an OLE DB data source. It defines a physical connection to the data source for a data provider.

Table 4-11 lists the supported ADO methods for the Connection object and maps them to the corresponding OLE DB methods.

Table 4-11. Mapping Methods Supported by the ADO Connection Object 
ADO Method
OLE DB Method
BeginTrans
ITransactionLocal::StartTransaction
CommitTrans
ITransactionLocal::Commit
Execute
ICommand::Execute or
IOpenRowset::OpenRowset
Open
IDBInitialize::Initialize
IDBCreateSession::Create Session
RollBackTrans
ITransactionLocal::Abort
OpenSchema
IDBSchemaRowset::GetRowset

Table 4-12 lists the dynamic properties supported for the ADO Connection object.

Table 4-12. Dynamic Properties Supported for the ADO Connection Object  
ADO Property
Default Value and Description
Active Sessions
VALUE=0. There is no limit to the maximum number of sessions that can exist at one time.
Asynchable Abort
VALUE=False. The data provider cannot abort transactions asynchronously.
Asynchable Commit
VALUE=False. The data provider cannot commit transactions asynchronously.
Autocommit Isolation Levels
Specifies the transaction isolation level while in auto-commit mode. A combination of zero or one or more of the following:
VALUE=DBPROPVAL_TI_BROWSE
VALUE=DBPROPVAL_TI_CURSORSTABILITY
VALUE=DBPROPVAL_TI_ISOLATED
VALUE=DBPROPVAL_TI_READCOMMITTED
VALUE=DBPROPVAL_TI_READUNCOMMITTED
VALUE=DBPROPVAL_TI_REPEATABLEREAD
VALUE=DBPROPVAL_TI_SERIALIZABLE
Catalog Location
The value depends on the SequeLink service you are using. Possible values are:
VALUE=1. The catalog name is at the start of the fully qualified name.
VALUE=2. The catalog name is at the end of the fully qualified name.
Catalog Term
Specifies the name the data source uses for a catalog.
VALUE=Database
Catalog Usage
Specifies how catalog names can be used in text commands. A combination of zero or one or more of the following:
VALUE=1. Catalog names are supported in all Data Manipulation Language statements.
VALUE=2. Catalog names are supported in all table definition statements.
VALUE=4. Catalog names are supported in all index definition statements.
VALUE=8. Catalog names are supported in all privilege definition statements.
Column Definition
VALUE=1. Columns can be created non-nullable.
COM Object Support
VALUE=1. The data providers support access to BLOBs as structured storage objects. A data consumer determines which interfaces are supported through the Structured Storage property.
Connection Status
VALUE=1. The data source is in an initialized state and able to communicate with the data store.
Current Catalog
Specifies the name of the current catalog. The data consumer can use the CATALOGS rowset to enumerate catalogs. If not set, the data provider uses the default catalog.
Data Source
Specifies the name of the data source or enumerator to which to connect.
Data Source Name
Specifies the name of the data source (server) used during the connection process.
Data Source Object Threading Model
VALUE=1. The data provider uses the free-threading model.
DBMS Name
Specifies the name of the product accessed by the ADO data provider.
DBMS Version
Specifies the version of the product that the data provider is currently accessing.
Extended Properties
A provider-specific string that contains extra initialization information. Consumers should use this property only for provider-specific connection information.
See "Connecting with a Provider String" for information on using the provider string with the ADO data provider.
GROUP BY Support
This value depends on the SequeLink service you are using.
VALUE=1. The GROUP BY clause is not supported.
VALUE=2. The GROUP BY clause must contain all nonaggregated columns in the select list. It cannot contain any other columns.
VALUE=4. The GROUP BY clause must contain all nonaggregated columns in the select list. It can contain columns that are not in the select list.
VALUE=8. The columns in the GROUP BY clause and the select list are not related. The meaning of nongrouped, nonaggregated columns in the select list is data source-dependent.
Heterogeneous Table Support
VALUE=0. The data provider cannot join tables from different catalogs or providers.
Identifier Case Sensitivity
This value depends on the SequeLink service you are using.
VALUE=1. Identifiers in SQL are case-sensitive and are stored in upper case in the system catalog.
VALUE=2. Identifiers in SQL are case-insensitive and are stored in lower case in the system catalog.
VALUE=4. Identifiers in SQL are case-sensitive and are stored in mixed case in the system catalog.
VALUE=8. Identifiers in SQL are case-insensitive and are stored in mixed case in the system catalog.
Initial Catalog
Specifies the name of the initial, or default, catalog to use when connecting to the data source.
Isolation Levels
This value depends on the SequeLink service you are using. Zero, or a combination of one or more of the following:
VALUE=DBPROPVAL_TI_BROWSE
VALUE=DBPROPVAL_TI_CHAOS
VALUE=DBPROPVAL_TI_CURSORSTABILITY
VALUE=DBPROPVAL_TI_ISOLATED
VALUE=DBPROPVAL_TI_READCOMMITTED
VALUE=DBPROPVAL_TI_READUNCOMMITTED
VALUE=DBPROPVAL_TI_REPEATABLEREAD
VALUE=DBPROPVAL_TI_SERIALIZABLE
Isolation Retention
VALUE=0. The data provider supports no transaction isolation retention levels.
Locale Identifier
Specifies the preferred locale ID for the consumer.
Maximum Index Size
VALUE=0. There is no limit on the index size.
Maximum Open Chapters
VALUE=0. There is no limit on the maximum number of chapters that can be open at any time.
Maximum Row Size
VALUE=0. There is no limit on the maximum length of a single row in a table.
Maximum Row Size Includes BLOB
VALUE=False. The maximum row size does not include the length of all BLOB data.
Maximum Tables in SELECT
VALUE=0. There is no limit on the number of tables in a Select statement.
Mode
VALUE=3. The default access is read-write.
Multi-Table Update
VALUE=False. The data provider cannot update rowsets derived from multiple tables.
Multiple Connections
VALUE=True. The data provider must spawn multiple connections to support concurrent command, session, and rowset objects.
Multiple Parameter Sets
VALUE=True. The data provider supports multiple parameter sets at the same time.
Multiple Results
VALUE=1. The data provider supports multiple results objects.
Multiple Storage Objects
VALUE=True. The data provider supports more than one open storage object at a time.
NULL Collation Order
The value depends on the SequeLink service you are using.
NULL Concatenation Behavior
The value depends on the SequeLink service you are using.
OLE DB Services
VALUE=0. The data provider does not enable the OLE DB services.
OLE DB Version
Specifies the version of OLE DB supported by the data provider. Refer to the README for the supported version.
Open Rowset Support
VALUE=0. All data providers support opening tables through IOpenRowset.
ORDER BY Columns In Select List
This value depends on the SequeLink service you are using.
Output Parameter Availability
VALUE=4. If a command returns a single result that is a rowset, output parameter data is available at the time the rowset is completely released.
Pass By Ref Accessors
VALUE=False. The data provider does not support the DBACCESSOR_PASSBYREF flag.
Password
Specifies the password to be used for connecting to the data source or enumerator.
Prepare Abort Behavior
The value depends on the SequeLink service you are using.
Prepare Commit Behavior
The value depends on the SequeLink service you are using.
Procedure Term
Specifies a character string that contains the data source vendor's name for a procedure.
Prompt
Specifies whether to prompt the user for additional information during initialization.
Provider Friendly Name
Specifies the name of the data provider, DataDirect SequeLink for ADO Provider.
Provider Name
VALUE=slslknn.DLL, where nn is the release level of the data provider.
Provider Version
Specifies the version of the DataDirect data provider. Refer to the README for the version number.
Quoted Identifier Sensitivity
This value depends on the SequeLink service you are using.
VALUE=1. Quoted identifiers in SQL are case-sensitive and are stored in upper case in the system catalog.
VALUE=2. Quoted identifiers in SQL are case-insensitive and are stored in lower case in the system catalog.
VALUE=4. Quoted identifiers in SQL are case-sensitive and are stored in mixed case in the system catalog.
VALUE=8. Quoted identifiers in SQL are case-insensitive and are stored in mixed case.
Read Only Data Source
VALUE=0. The data source can be updated.
Rowset Conversions on Command
VALUE=True. Callers can inquire on a command about conversions supported on rowsets generated by the command.
Schema Term
Specifies the name the data source uses for a schema.
Schema Usage
This value depends on the SequeLink service you are using. A combination of the following:
VALUE=DBPROPVAL_SU_DML_STATEMENTS. Schema names are supported in all Data Manipulation Language statements.
VALUE=DBPROPVAL_SU_TABLE_DEFINITION. Schema names are supported in all table definition statements.
VALUE=DBPROPVAL_SU_INDEX_DEFINITION. Schema names are supported in all index definition statements.
VALUE=DBPROPVAL_SU_PRIVILEGE_DEFINITION. Schema names are supported in all privilege definition statements.
Server Name
Specifies the name of the server. This can be the same as the Data Source property if the server name is used to define the user's data source. Alternatively, if the data provider connects through the data provider's "friendly" data source names, this can be the actual name of the server.
SQL Support
Specifies the level of SQL grammar that the data provider supports. The effects are cumulative. A combination of zero or one or more of the following:
VALUE=DBPROPVAL_SQL_NONE
VALUE=DBPROPVAL_SQL_ODBC_CORE
VALUE=DBPROPVAL_SQL_ODBC_MINIMUM
VALUE=DBPROPVAL_SQL_ODBC_EXTENDED
VALUE=DBPROPVAL_SQL_ESCAPECLAUSES
VALUE=DBPROPVAL_SQL_ANSI92_ENTRY
VALUE=DBPROPVAL_SQL_ANSI92_ENTRY
VALUE=DBPROPVAL_SQL_FIPS_TRANSITIONAL
VALUE=DBPROPVAL_SQL_ANSI92_INTERMEDIATE
VALUE=DBPROPVAL_SQL_ANSI92_FULL
VALUE=DBPROPVAL_SQL_ANSI89_IEF
VALUE=DBPROPVAL_SQL_SUBMINIMUM
Structured Storage
VALUE=1. The data provider supports DBPROPVAL_SS_ISEQUENTIALSTREAM.
Subquery Support
Specifies the predicates in text commands that support subqueries. The value can be zero, or one or more of the following:
VALUE=DBPROPVAL_SQ_CORRELATEDSUBQUERIES
VALUE=DBPROPVAL_SQ_COMPARISON
VALUE=DBPROPVAL_SQ_EXISTS
VALUE=DBPROPVAL_SQ_IN
VALUE=DBPROPVAL_SQ_QUANTIFIED
Table Term
Specifies the name the data source uses for a table.
Transaction DDL
This value depends on the SequeLink service you are using.
User Name
Specifies a character string with the name used in a particular database. This can be different from the login name.
Window Handle
Specifies the window handle to use if the data source object or enumerator needs to prompt for additional information.

Recordset Object

The Recordset object is the set of records resulting from a query against a database and a cursor, which is the interface to the records. If you create a Connection object before you open a Recordset object, multiple Recordset objects can be opened on the same connection.

Table 4-13 maps the methods of the Recordset object to the OLE DB methods supported by the ADO data provider.

Table 4-13. Mapping Methods Supported by the Recordset Object  
ADO Method
OLE DB Method
AddNew
IRowsetChange::InsertRow
CancelBatch
IRowsetUpdate::Undo
Clone
IRowsetLocate
Close
IAccessor::ReleaseAccessor
IRowset::ReleaseRows
Delete
IRowsetChange::DeleteRows
GetRows
IAccessor::CreateAccessor
IRowsetLocate::GetRowsAt
IRowset::GetNextRows
IRowset::GetData
Move
IRowsetLocate::GetRowsAt
IRowset::GetNextRows
MoveFirst
IRowsetLocate::GetRowsAt
IRowset::RestartPosition
MoveLast
IRowsetLocate::GetRowsAt
MoveNext
IRowsetLocate::GetRowsAt
IRowset::GetNextRows
MovePrevious
IRowsetLocate::GetRowsAt
IRowset::GetNextRows
NextRecordSet
IMultipleResults::GetResult
Open
IOpenRowset::OpenRowset
ICommand::Execute
Requery
IOpenRowset::OpenRowset
ICommand::Execute
Supports
IRowsetInfo::GetProperties
Update
IRowsetChange::SetData
IRowsetUpdate::Update
UpdateBatch
IRowsetUpdate::Update

Table 4-14 lists the dynamic properties supported by the ADO data provider for the Recordset object.

Table 4-14. Dynamic Properties Used for the Recordset Object 
ADO Property
Default Value and Description
Access Order
VALUE=2. Columns can be accessed in any order.
Blocking Storage Objects
VALUE=False. Instantiated storage objects do not prevent the use of other methods.
Bookmark Information
Specifies additional information about bookmarks over the rowset.
Bookmark Type
VALUE=1. The bookmark type is numeric.
Change Inserted Rows
VALUE=False. DeleteRows returns a status of DBROWSTATUS_E_NEWLYINSERTED for the newly inserted row and SetData returns DB_E_NEWLYINSERTED.
Column Privileges
Specifies whether access rights are restricted on a column-by-column basis.
VALUE=True. Access rights are restricted on a column-by-column basis.
VALUE=False. Access rights are not restricted on a column-by-column basis. If the rowset exposes IRowsetChange, SetData can be called for any column in the rowset.
Delay Storage Object Updates
VALUE=False. Storage objects are used in immediate update mode.
Fetch Backwards
VALUE=False. cRows must be non-negative.
Hold Rows
VALUE=False. The rowset might require pending changes to be transmitted to the data store before fetching additional rows.
IAccessor
VALUE=True.
IColumnsInfo
VALUE=True.
IColumnsRowset
VALUE=True.
IConvertType
VALUE=True.
IRowset
VALUE=True.
IRowsetChange
VALUE=False.
IRowsetInfo
VALUE=True.
IRowsetLocate
VALUE=False.
Immobile Rows
VALUE=True. The rowset will not reorder inserted or updated rows.
Literal Bookmarks
VALUE=False. Bookmarks can only be compared with IRowsetLocate::Compare.
Literal Row Identity
VALUE=False. The consumer must call IRowsetIdentity::IsSameRow to determine whether two row handles point to the same row.
Lock Mode
VALUE=1. The data provider is not required to lock rows to ensure successful updates.
Maximum Open Rows
Specifies the maximum number of rows that can be active at the same time.
VALUE=4096
Maximum Pending Rows
VALUE=0. There is no limit to the maximum number of rows that can have pending changes at the same time.
Maximum Rows
VALUE=0. There is no limit to the number of rows that can be returned in a rowset.
Memory Usage
VALUE=0. There is no limit to the amount of memory that the rowset can use.
Objects Transacted
VALUE=True. Any object created on the specified column is transacted.
Others' Changes Visible
VALUE=False. The rowset cannot see updates and deletes made by others.
Others' Inserts Visible
VALUE=False. The rowset cannot see the rows inserted by others.
Own Changes Visible
VALUE=False. The rowset cannot see updates and deletes made by consumers of the rowset unless the command is executed again.
Own Inserts Visible
VALUE=False. The rowset can see the rows inserted by consumers only after the command is run again.
Preserve on Abort
The value is specific to the SequeLink Server you are using.
Preserve on Commit
The value is specific to the SequeLink Server you are using.
Quick Restart
VALUE=True. IRowset::RestartPosition is not expensive to execute and does not execute the command that created the rowset again.
Remove Deleted Rows
VALUE=False. Static cursors do not remove deleted rows.
Report Multiple Changes
VALUE=False. An update or delete always affects a single row or the data provider cannot detect whether it affects multiple rows.
Return Pending Inserts
VALUE=False. The methods that fetch rows cannot return pending insert rows.
Row Privileges
VALUE=False. Access rights are not restricted on a row-by-row basis.
Row Threading Model
VALUE=1. The data provider supports the free-threaded model.
Scroll Backward
VALUE=False. IRowsOffset must be non-negative.
Server Cursor
VALUE=False. The data provider determines where to locate the cursor.
Skip Deleted Bookmarks
VALUE=False. GetRowsAt, GetApproximatePosition, or FindNextRow returns DB_E_BADBOOKMARK.
Strong Row Identity
VALUE=False. There is no guarantee that the handles of newly inserted rows can be compared successfully.
Unique Rows
VALUE=False. Rows in the rowset may or may not be uniquely identified by their column values.
Updatability
Specifies the supported methods on IRowsetChange.
VALUE=0
Use Bookmarks
VALUE=False. The rowset does not support bookmarks.